﻿
/**
 * 验证输入字符串是否为有效的邮箱或电话号码
 * @param {string} input - 待验证的字符串
 * @return {Object} - 返回验证结果对象
 *   {
 *     isValid: boolean, // 是否有效
 *     isEmail: boolean, // 是否为邮箱
 *     isPhone: boolean, // 是否为电话
 *     message: string   // 验证消息
 *   }
 */
function validateEmailOrPhone(input) {
    // 去除首尾空格
    const str = input.trim();

    // 定义邮箱正则表达式
    const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

    // 定义电话号码正则表达式（支持中国大陆手机号和国际常见格式）
    const phoneRegex = /^(?:\+?86)?1[3-9]\d{9}$|^(?:\+?\d{1,3}[-\s]?)?\(?\d{2,3}\)?[-\s]?\d{3,4}[-\s]?\d{4}$/;

    // 验证结果对象
    const result = {
        isValid: false,
        isEmail: false,
        isPhone: false,
        message: '输入无效'
    };

    // 检查是否为空
    if (!str) {
        result.message = '输入不能为空';
        return result;
    }

    // 验证邮箱
    if (emailRegex.test(str)) {
        result.isValid = true;
        result.isEmail = true;
        result.message = '有效的邮箱地址';
        return result;
    }

    // 验证电话号码
    if (phoneRegex.test(str)) {
        result.isValid = true;
        result.isPhone = true;
        result.message = '有效的电话号码';
        return result;
    }

    // 如果都不匹配
    return result;
}

/**
 * 判断字符串中是否包含中文字符
 * @param {string} str - 要检查的字符串
 * @returns {boolean} - true表示包含中文字符，false表示不包含
 */
function containsChinese(str) {
    // 如果输入为空或不是字符串，直接返回false
    if (!str || typeof str !== 'string') {
        return false;
    }

    // 匹配中文字符的正则表达式（包含中文标点符号）
    const chinesePattern = /[\u4E00-\u9FA5\u3000-\u303F\uFF00-\uFFEF]/;

    // 测试字符串中是否有任意字符匹配中文模式
    return chinesePattern.test(str);
}

/**
 * 兼容性函数：判断字符串中是否包含中文字符
 * 为了兼容现有代码，保留isChinese函数名
 * @param {string} str - 要检查的字符串
 * @returns {boolean} - true表示包含中文字符，false表示不包含
 */
function isChinese(str) {
    return containsChinese(str);
}

